﻿using HCQ2_Model;
using HCQ2_Model.DocModel;
using HCQ2_Model.DocModel.APIModel;
using HCQ2_Model.DocModel.APIResultModel;
using HCQ2_Model.Pay;
using HCQ2_Model.ViewModel;
using HCQ2_Model.VR.Model;
using HCQ2_Model.VR.Params;
using HCQ2_Model.VRDD.InputDto._0730;
using HCQ2_Model.VRDD.InputDto._210908;
using HCQ2_Model.VRDD.OutputDto._0730;
using HCQ2_Model.VRDD.OutputDto._210908;
using HCQ2_Model.VRDevice.ParamModel;
using HCQ2_Model.VRDevice.ResultModel;
using HCQ2_Model.VRQDMeta.OutputDto;
using HCQ2WebAPI_Logic.Model;
using System.Collections.Generic;

namespace HCQ2_IBLL
{
    public partial interface IT_DocumentInfoBLL
    {
        //*******************************************奇点元宇宙***********************************************
        /// <summary>
        ///  获取奇点元宇宙【应用】列表
        /// </summary>
        /// <param name="param">查询参数</param>
        /// <param name="total">返回总条数</param>
        /// <returns></returns>
        List<MetaListResult> GetQDMetaList(QDMetaParam param, out int total);
        /// <summary>
        ///  获取数据【应用】
        /// </summary>
        /// <param name="file_id"></param>
        /// <returns></returns>
        MetaListResult GetProgramData(int file_id);
        /// <summary>
        ///  获取奇点元宇宙【房间】列表
        /// </summary>
        /// <param name="param">查询参数</param>
        /// <param name="total">返回总条数</param>
        /// <returns></returns>
        List<MetaRoomResult> GetQDMetaRoomList(QDMetaParam param, out int total);
        /// <summary>
        ///  获取数据【房间】
        /// </summary>
        /// <param name="file_id"></param>
        /// <returns></returns>
        MetaRoomResult GetRoomData(int file_id);
        //*******************************************VR设备***********************************************
        /// <summary>
        ///  获取楼宇列表
        /// </summary>
        /// <param name="param">查询参数</param>
        /// <param name="total">返回总条数</param>
        /// <returns></returns>
        List<VRBuildResult> GetVRBuildList(VRdeviceParam param, out int total);
        /// <summary>
        ///  获取设备类别
        /// </summary>
        /// <param name="param">查询参数</param>
        /// <param name="total">返回总条数</param>
        /// <returns></returns>
        List<VRdeviceResult> GetVRDeviceList(VRdeviceParam param, out int total);
        /// <summary>
        ///  获取设备信息
        /// </summary>
        /// <param name="file_id"></param>
        /// <returns></returns>
        VRdeviceResult GetVRDevicePrice(int file_id);
        /// <summary>
        ///  导入设备
        /// </summary>
        /// <param name="tempPath"></param>
        /// <returns></returns>
        List<string> importDevice(string tempPath, out bool importMark);
        //********************************************end*************************************************
        /// <summary>
        ///  添加文档
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        int AddDocInfo(T_DocumentInfo model);
        /// <summary>
        ///  获取Table数据
        /// </summary>
        /// <param name="model">参数</param>
        /// <param name="Server">服务</param>
        /// <param name="total">根据条件返回记录条数</param>
        /// <returns></returns>
        List<DocTreeResultModel> GetTableData(DocTableParamModel model,int user_id, out int total);
        /// <summary>
        ///  获取Table数据
        /// </summary>
        /// <param name="model">参数</param>
        /// <param name="total">根据条件返回记录条数</param>
        /// <returns></returns>
        List<DocTreeResultModel> GetTableData(HeadTableParamModel model, out int total);
        /// <summary>
        ///  获取用户当天上传数据
        /// </summary>
        /// <param name="user_id"></param>
        /// <param name="modelType">模块类别</param>
        /// <returns></returns>
        int GetUpNumByUser(int user_id, string modelType);
        /// <summary>
        ///  根据代码获取字典下拉
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        List<ResultSelectVal> GetDocDictByCode(SelectKeyModel code);
        /// <summary>
        ///  批量编辑作品
        /// </summary>
        /// <param name="fileId"></param>
        /// <param name="file_classify"></param>
        /// <param name="org_unit"></param>
        /// <returns></returns>
        int SaveBatchFile(string fileId, string file_classify, string org_unit,string unit_name);

        //************************************APP接口************************************
        /// <summary>
        ///  获取商品详情接口
        /// </summary>
        /// <param name="file_id"></param>
        /// <param name="user_id"></param>
        /// <returns></returns>
        GoodsDetal GetAppGoodsDetail(int file_id, int user_id = 0);
        /// <summary>
        ///  获取商品列表
        /// </summary>
        /// <param name="model"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        TableModel GetAPPShopList(ViewGoodsModel model,int userId);
        /// <summary>
        ///  获取我的资源/作品 
        /// </summary>
        /// <param name="folderId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        List<GoodsListModel> GetSynchronMyVR(DocListParam model, int userId);
        TableModel GetSynchronMyVRData(DocListParam model, int userId);
        /// <summary>
        ///  统计我的资源/作品 数量
        /// </summary>
        /// <param name="model"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        int GetSynchronMyVRCount(DocListParam model, int userId);
        /// <summary>
        ///  判断用户是否购买过此商品
        /// </summary>
        /// <param name="fileId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        bool PayCountByFileId(int fileId, int userId);
        /// <summary>
        ///  判断文件是否有被分享给用户没有
        /// </summary>
        /// <param name="fileId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        bool ShareFileToUser(int fileId, int userId);
        /// <summary>
        ///  判断用户是否拥有审核权限
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        bool IsApproveLimit(int userId);

        /// <summary>
        ///  获取附件地址
        /// </summary>
        /// <param name="file_id"></param>
        /// <returns></returns>
        PayDocFileOptionsModel GetBagFileRecord(int file_id);
        /// <summary>
        ///  获取商品购买使用截止时间
        /// </summary>
        /// <param name="file_id"></param>
        /// <param name="user_id"></param>
        /// <returns></returns>
        PayNorderModel GetFileEndTime(int file_id, int user_id);
        /// <summary>
        ///  批量删除作品时记录删除附件信息
        /// </summary>
        /// <param name="file_id"></param>
        /// <returns></returns>
        bool RecordDelBatchFile(List<int> fileIds, string user_name);
        /// <summary>
        ///  判断是否允许被删除
        /// </summary>
        /// <param name="file_id"></param>
        /// <returns></returns>
        int CheckDelFile(int file_id);
        /// <summary>
        ///  获取用户收藏的商品和作品
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        List<OutputUserFavorite> GetUserFavorite(UserFavorite param, int user_id);
        /// <summary>
        ///  获取用户浏览历史
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        List<OutputUserBrowse> GetUserBrowse(InputUserBrowseParam param);
        /// <summary>
        ///  获取我的收藏商品列表
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        List<OutputMyGoods> GetMyGoodsFavorite(InputMyGoods param, int user_id);
        /// <summary>
        ///  获取店铺商品列表
        /// </summary>
        /// <param name="param"></param>
        /// <param name="user_id"></param>
        /// <returns></returns>
        List<OutputGoodsByStore> GetGoodsByStoreList(InputGoodsByStore param, int user_id, out int total);
    }
}